package model

import (
	"gorm.io/gorm"
	"time"
)

type Orders struct {
	OrderId         int64     `gorm:"column:order_id;type:BIGINT;comment:订单唯一标识;primaryKey;" json:"order_id"`                                                      // 订单唯一标识
	OrderNumber     string    `gorm:"column:order_number;type:VARCHAR(32);comment:订单编号（业务可见号）;not null;" json:"order_number"`                                      // 订单编号（业务可见号）
	UserId          int64     `gorm:"column:user_id;type:BIGINT;comment:用户ID;not null;" json:"user_id"`                                                            // 用户ID
	TotalAmount     float64   `gorm:"column:total_amount;type:DECIMAL(10, 2);comment:订单总金额;not null;" json:"total_amount"`                                         // 订单总金额
	Status          string    `gorm:"column:status;type:ENUM('pending', 'paid', 'shipped', 'delivered', 'cancelled');comment:订单状态;default:pending;" json:"status"` // 订单状态
	PaymentMethod   string    `gorm:"column:payment_method;type:VARCHAR(20);comment:支付方式;" json:"payment_method"`                                                  // 支付方式
	CreatedAt       time.Time `gorm:"column:created_at;type:DATETIME;comment:创建时间;default:CURRENT_TIMESTAMP;" json:"created_at"`                                   // 创建时间
	UpdatedAt       time.Time `gorm:"column:updated_at;type:DATETIME;comment:更新时间;default:CURRENT_TIMESTAMP;" json:"updated_at"`                                   // 更新时间
	PaidAt          time.Time `gorm:"column:paid_at;type:DATETIME;comment:支付时间;" json:"paid_at"`                                                                   // 支付时间
	ShippedAt       time.Time `gorm:"column:shipped_at;type:DATETIME;comment:发货时间;" json:"shipped_at"`                                                             // 发货时间
	RecipientName   string    `gorm:"column:recipient_name;type:VARCHAR(50);comment:收货人姓名;not null;" json:"recipient_name"`                                        // 收货人姓名
	RecipientPhone  string    `gorm:"column:recipient_phone;type:VARCHAR(20);comment:收货人电话;not null;" json:"recipient_phone"`                                      // 收货人电话
	ShippingAddress string    `gorm:"column:shipping_address;type:VARCHAR(255);comment:配送地址;not null;" json:"shipping_address"`                                    // 配送地址
}

type User struct {
	Id       int32          `gorm:"column:id;type:int;primaryKey;not null;" json:"id"`
	Mobile   string         `gorm:"column:mobile;type:char(11);default:NULL;" json:"mobile"`
	Password string         `gorm:"column:password;type:char(32);default:NULL;" json:"password"`
	Name     string         `gorm:"column:name;type:varchar(20);default:NULL;" json:"name"`
	Email    string         `gorm:"column:email;type:varchar(20);default:NULL;" json:"email"`
	Ipaddrss string         `gorm:"column:ipaddrss;type:varchar(15);default:NULL;" json:"ipaddrss"`
	CreateAt time.Time      `gorm:"column:create_at;type:datetime(3);default:CURRENT_TIMESTAMP(3);" json:"create_at"`
	UpdateAt time.Time      `gorm:"column:update_at;type:datetime(3);default:CURRENT_TIMESTAMP(3);" json:"update_at"`
	DeleteAt gorm.DeletedAt `gorm:"column:delete_at;type:datetime(3);default:NULL;" json:"delete_at"`
}

func (o *Orders) TableName() string {
	return "orders"
}

func (u *User) TableName() string {
	return "user"
}
